// 为每个变更来源分配主色调，同一来源的部门使用该色调的变体
export function generateSourceColors(sources) {
  const baseColors = [
    "#3498db", // 浅蓝
    "#2ecc71", // 鲜绿
    "#f39c12", // 橙黄
    "#e74c3c", // 深红
    "#9b59b6", // 浅紫
    "#1abc9c", // 青绿
    "#34495e", // 深灰
    "#e67e22", // 深橙
    "#16a085", // 茶绿
    "#2980b9", // 深蓝
    "#8e44ad", // 深紫
    "#f1c40f", // 亮黄
    "#d35400", // 棕红
    "#c0392b", // 酒红
    "#7f8c8d", // 浅灰
    "#95a5a6", // 青灰
    "#00bcd4", // 亮青
    "#ff9800", // 亮橙
    "#8bc34a", // 浅绿
    "#e91e63" // 粉红
  ];

  // 为每个变更来源分配一个主色调
  const sourceColorMap = new Map();
  sources.forEach((source, index) => {
    sourceColorMap.set(source, baseColors[index % baseColors.length]);
  });

  return sourceColorMap;
}
// 调整颜色亮度的辅助函数
export function adjustColorLightness(color, percent) {
  // 将hex转换为RGB对象
  const hexToRgb = hex => {
    const r = parseInt(hex.slice(1, 3), 16);
    const g = parseInt(hex.slice(3, 5), 16);
    const b = parseInt(hex.slice(5, 7), 16);
    return { r, g, b };
  };

  // 将RGB转换为hex
  const rgbToHex = rgb => {
    return `#${((1 << 24) + (rgb.r << 16) + (rgb.g << 8) + rgb.b).toString(16).slice(1)}`;
  };

  const rgb = hexToRgb(color);
  // 亮度调整公式（HSL转换更准确，这里简化处理）
  const factor = 1 + percent;
  const newR = Math.max(0, Math.min(255, Math.round(rgb.r * factor)));
  const newG = Math.max(0, Math.min(255, Math.round(rgb.g * factor)));
  const newB = Math.max(0, Math.min(255, Math.round(rgb.b * factor)));

  return rgbToHex({ r: newR, g: newG, b: newB });
}
// 生成同一变更来源下不同部门的颜色变体（调整亮度）
export function getDepartmentColor(baseColor, index) {
  // 亮度调整值（为同一来源的不同部门生成略有差异的颜色）
  const lightnessOffsets = [0, -0.15, 0.15, -0.3, 0.3];
  const offset = lightnessOffsets[index % lightnessOffsets.length];

  // 简单的颜色亮度调整（实际项目中可使用更完善的颜色处理库）
  return adjustColorLightness(baseColor, offset);
}
